python3小白课:用property函数定义属性
除了我们可以直接设定实例变量之外,我们在定义类的时候,还可以定义一些获取、设置等的专门的方法,将这些方法放到property参数中,可以让实例变量拥有这些属性。
这么说可能大家听得不是太明白,我们先来看一眼property函数(属性)的语法格式和说明,再来举例子:
property函数的语法格式为:
property(fget=None, fset=None, fdel=None, doc=None)
这里四个参数,fget表示获取方法,fset表示赋值方法,fdel表示删除属性时调用的方法(使用del 实例名.属性名可以删除属性,比较少用),doc表示说明文档,是一个字符串。你可以传入0-4个参数,如果没有传入的参数,表示不允许对那个属性做那样的事。比如传入0个参数,表示该属性既不能读,也不能写;又比如传入1个参数,表示为只读属性。以此类推。
下面我们直接来看一个例子来理解吧。
# coding:utf-8
class Student:
def getname(self):
return self.name
def setname(self, name):
print("进行了设置")
self.name = name
this_name = property(getname, setname)
s = Student()
s.this_name = "小白白"
print(s.this_name)
如上的代码,我们设定了一个可以读写的属性this_name,为了跟name进行区别,我增加了前缀,后续在进行设置和获取的时候会分别调用setname(赋值时会调用那个我额外补的print函数,你也可以把print函数改成一些赋值前的前置验证啊检查啊什么的,达到不符合条件就无法赋值的目的)和getname方法。
单词释义
| 单词 | 释义 |
|---|---|
| property | 性质,属性 |
| get | 获取 |
| set | 设置 |
| del | delete删除的简写 |
| doc | document文档的简写 |
| this | 这个,这一个 |